<!DOCTYPE HTML>
<html lang="zh">
<head>
<title>判断 - 语法 &amp; 使用 | AutoHotkey v2</title>
<meta name="description" content="The 判断 statement executes one 为 from a list of mutually exclusive candidates." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<link href="../static/theme.css" rel="stylesheet" type="text/css" />
<script src="../static/content.js" type="text/javascript"></script>
<script type="text/javascript">$(function(){0<=window.navigator.userAgent.toLowerCase().indexOf("ucbrowser")&&CaoNiMaDeUc()})</script>
</head>
<body>

<h1>判断</h1>

<p>从互斥候选项列表中执行其中一个实例.</p>

<pre class="Syntax"><span class="func">判断</span> <span class="optional">SwitchValue</span>
{
<span class="func">为</span> CaseValue1:
    <i>Statements1</i>
<span class="func">为</span> CaseValue2a, CaseValue2b:
    <i>Statements2</i>
<span class="func">Default</span>:
    <i>Statements3</i>
}</pre>

<h2 id="Remarks">备注</h2>
<p>如果存在, 则对 <em>SwitchValue</em> 进行一次计算并与每个实例值进行比较, 直到找到匹配为止, 然后执行该实例. 否则, 将执行第一个计算为 <a href="../Concepts.htm#boolean">true</a>(非零和非空) 的实例. 如果没有匹配的实例并且存在 <code>Default</code>, 则执行它.</p>
<p>字符串比较是区分大小写的. 可以使用 <a href="StrLower.htm">字符串小写</a> 或 <a href="StrLower.htm">字符串大写</a> 来模拟不区分大小写的比较. 例如, <code>判断 字符串小写(Value)</code>, 每个实例都使用小写字符串.</p>
<p>与 <code>=</code> 和 <code>==</code> 操作符一样, 如果 <em>SwitchValue</em> 和实例值都是纯数字, 或者其中一个是纯数字而另一个是数字字符串, 则执行数值比较. 每个实例都是单独考虑的, 并不影响用于其他实例的比较类型.</p>
<p>每个实例最多可以列出 20 个值. 每个值必须是一个<a href="../Language.htm#expressions">表达式</a>, 但可以是一个原义数字, 加引号的字符串或变量. <code>为</code> 和 <code>Default</code> 必须以冒号 <code>:</code> 终止.</p>
<p>每个实例的第一个语句可以在 <code>为</code> 下面, 也可以在同一行, 挨着冒号. 每个实例都隐式地以下一个 <code>为</code>/<code>Default</code> 或右大括号结束. 与在其他一些语言中找到的 判断 语句不同, 没有隐式的落下直通和不使用 <a href="Break.htm">跳出</a>(除非用于跳出封闭循环).</p>
<p>由于所有实例都包含在同一个块中, 因此在一个实例中定义的标签可以是另一个案例的 <a href="Goto.htm">跳转</a> 的目标. 但是, 如果标签位于 <code>为</code> 或 <code>Default</code> 的正上方, 则它将指向前一个实例的结尾, 而不是下一个实例的开头.</p>
<p><code>Default</code> 不需要列在最后.</p>

<h2 id="Related">相关</h2>
<p><a href="If.htm">如果</a>, <a href="Else.htm">否则</a>, <a href="Block.htm">区块</a></p>

<h2 id="examples">示例</h2>
<div class="ex" id="ExInput">
<p><a href="#ExInput">#1</a>: 要测试这个例子, 输入 <kbd>[</kbd> 后面跟着下面列出的一个缩写, 任何其他 5 个字符, 或 Enter/Esc/Tab/<kbd>.</kbd>; 或等待 4 秒.</p>
<pre>~[::
{
    Hook := 输入钩("V T5 L4 C", "{enter}.{esc}{tab}", "btw,otoh,fl,ahk,ca")
    Hook.Start()
    Hook.Wait()
    判断 Hook.EndReason
    {
    为 "Max":
        信息框 'You entered "' Hook.Input '", which is the maximum length of text.'
为 "Timeout":
        信息框 'You entered "' Hook.Input '" at which time the input timed out.'
    为 "EndKey":
        信息框 'You entered "' Hook.Input '" and terminated the input with ' Hook.EndReason '.'
    default:  <em>; 匹配</em>
        判断 Hook.Input
        {
        为 "btw":   发送 "{backspace 4}by the way"
        为 "otoh":  发送 "{backspace 5}on the other hand"
        为 "fl":    发送 "{backspace 3}Florida"
        为 "ca":    发送 "{backspace 3}California"
        为 "ahk":
            发送 "{backspace 3}"
            运行 "https://www.autohotkey.com"
        }
    }
}</pre>
</div>

</body>
</html>